<?php
	/* trova il nuovo numero documento*/
		$query_n = 'SELECT (MAX(`numero`)+1) AS maxnumero FROM `documenti` WHERE IDdocstato != '.$_CFG[stati][eliminato];
		if ($result = $mysqli->query($query_n)) {
			$numerodoc = $result->fetch_array(MYSQLI_BOTH);
			$numerodoc = $numerodoc[0];
			if(is_null($numerodoc)) $numerodoc = 1;
			$result->free();
			if($_CFG[debug]) echo "1). Calcola l'ultimo numero progressivo documento: ".$numerodoc."<br />\n";
		}
		if($_CFG[debug]) echo "<hr>\n";
	
	/* inserisce testata documento */
		$cart_tavolo = isset($_SESSION['cart-tavolo']) ? $_SESSION['cart-tavolo'] : 'null';
		$cart_cliente = isset($_SESSION['cart-cliente']) ? '"'.$_SESSION['cart-cliente'].'"' : 'null';
		$username = isset($_SESSION['username']) ? '"'.$_SESSION['username'].'"' : 'null';
		$sql_documenti = 'INSERT INTO `documenti`'
						.'(`IDdocumento`, `sessione`, `numero`, `dataora`, `tavolo`, `nome`, `username`, `IDdocstato`)'
						.' VALUES '
						.'(null,'
						.' "'.session_id().'",'
						.' '.$numerodoc.','
						.' NOW(),'
						.' '. $cart_tavolo .','
						.' '. $cart_cliente .','
						.' '. $username .','
						.' '.$_CFG[stati][ordine].')';
						
		if($_CFG[debug]) echo "2). INSERIMENTO DELLA TESTATA DOCUMENTO:<br />\n<textarea rows=10 cols=40>".$sql_documenti."\n";
		if ($result = $mysqli->query($sql_documenti)) {
			if($_CFG[debug])echo "OK. Testa documento inserito<br />\n";
		}
		if($_CFG[debug]) echo "</textarea><hr>\n";
	
	/* reperisce l'ultimo id inserito in base alla id_sessione per inserire le righe */
		$iddoc = $mysqli->insert_id;
		if($_CFG[debug]) echo "3). Recupera  \$iddoc per l'inserimento delle righe: ".$iddoc."<br />\n";
		if($_CFG[debug]) echo "<hr>\n";
	
	/* inserisce le righe rilevandole dalla sessione */
	
			# ESEMPIO per l'utilizzo della funzione array_filter($array, $callback)
			#$array = array (1, 3, 3, 5, 6); 
			#$my_value = 3; 
			#$filtered_array = array_filter($array, function ($element) use ($my_value) { return ($element != $my_value); } ); 
			#print_r($filtered_array); 
		
		$cart_nozero = array_filter($_SESSION['cart'], function ($item){ return $item > 0; });

		/* debug */
		if($_CFG[debug]){
			echo "4). Visuallizza il Carrello depurato dai prodotti con quantita' 0<br />\n<textarea rows=10 cols=40>";
			print_r($cart_nozero);
			echo "</textarea>";
			echo "<hr />";
		}

			
		/*carica dati prodotti*/
		if(isset($cart_nozero))
		{
			foreach ($cart_nozero as $key => $value)
			{
				$ids .= ", $key";
			}
				
			$query = "select * from prodotti where IDprodotto in(0".$ids."); ";
			if ($result = $mysqli->query($query)) 
			{
				if($_CFG[debug])echo "4.1). Controlla i prodotti speciali come da configure<br />\n<textarea rows=10 cols=40>";
				while ($row = $result->fetch_assoc()) 
				{
					$prodotti[$row[IDprodotto]]=$row;
					//`IDdocriga`, `IDdocumento`, `descrizione`, `qta`, `prezzo`
					//[IDprodotto], [IDcategoria], [prodotto], [descrizione], [prezzo];
					#$multiquery .= 'INSERT INTO `docrighe`(`IDdocriga`, `IDdocumento`, `descrizione`, `qta`, `prezzo`) VALUES (null,'.$iddoc.', \''.$row[prodotto].'\', '.$cart_nozero[$row[IDprodotto]].', '.$row[prezzo].');'."\n";
					$IDcategoria = (array_key_exists($row[IDprodotto],$_CFG[specialproduct]))? $_CFG[specialproduct][$row[IDprodotto]] : $row[IDcategoria] ;
					if($_CFG[debug]){
						echo "IDprodotto: ".$row[IDprodotto]."\n";
						echo "IDcategoria: ".$row[IDcategoria]."\n";
						echo "Check: ".(array_key_exists($row[IDprodotto],$_CFG[specialproduct]))? 'special' : 'no' ."\n";
						echo "IDcategoriaSpecial: ".$_CFG[specialproduct][$row[IDprodotto]]."\n";
					}
					$multiquery .= 'INSERT INTO `docrighe`(`IDdocriga`, `IDdocumento`, `IDprodotto`, `IDcategoria`, `descrizione`, `qta`, `prezzo`) VALUES (null,'.$iddoc.',  '.$row[IDprodotto].', '.$IDcategoria.', \''.$row[prodotto].'\', '.$cart_nozero[$row[IDprodotto]].', '.$row[prezzo].');'."\n";
				}
				if($_CFG[debug])echo "</textarea><hr />";
			}
		}	
		/* debug */
		if($_CFG[debug]){
			echo "5). Crea l'array con l'elenco dei prodotti da inserire nel database<br />\n<textarea rows=10 cols=40>";
			print_r($prodotti);
			echo "</textarea>";
			echo "<hr />";
			echo "6). Query Multipla di tutte le righe inserite nel carrello<br />\n<textarea rows=10 cols=40>";
			echo $multiquery;
			echo "</textarea>";	
			echo "<hr />";
		}

		//esegue le query
		if($_CFG[debug]) echo "7). Ogni riga restituisce OK se inserita correttamente nel database carrello righe<br />\n<textarea rows=10 cols=40>";
		$mysqli->multi_query($multiquery); 
		do { 
		  $mysqli->use_result();//->close() 
		  if($_CFG[debug])echo "Okay\n"; 
		} while ($mysqli->next_result()); 

		if ($mysqli->errno) { 
		  echo "Stopped while retrieving result : ".$mysqli->error; 
		} 
		if($_CFG[debug]) echo "</textarea><hr />";
